home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO106.dsk / BACKGAMMON / BACKGAMMON.bas next >
BASIC Source File  |  2012-02-16  |  15KB  |  320 lines

  1. 100  REM   **************
  2. 110  REM   * BACKGAMMON *
  3. 120  REM   **************
  4. 130  REM   COPYRIGHT 1984,1985
  5. 140  REM   EMERALD VALLEY PUBLISHING CO.
  6. 150  REM   BY DENNIS WEBBER & THE HCM STAFF
  7. 160  REM   HOME COMPUTER MAGAZINE
  8. 170  REM   VERSION 5.1.1
  9. 180  REM   APPLE II FAMILY APPLESOFT
  10. 190  REM 
  11. 200  IF  PEEK(103) = 1  AND  PEEK(104) = 64  THEN 230
  12. 210  POKE 103,1: POKE 104,64: POKE 16384,0: POKE 16384,0: POKE 16385,0: POKE 16386,0
  13. 220  PRINT  CHR$(4);"RUN BACKGAMMON"
  14. 230  DEF  FN Z(X) = (P(X +A6) >0) +(P(X +A8) >0)
  15. 240  TEXT : HOME : VTAB 12: HTAB 15: PRINT "BACKGAMMON": VTAB 23: HTAB 15: PRINT "PLEASE WAIT"
  16. 250  DEF  FN D(A) =  INT( RND(1) *6) +1
  17. 260  GOSUB 2400
  18. 270  GOSUB 2920
  19. 280  INPUT "NAME ?";NA$: PRINT 
  20. 290  IF  LEN(NA$) >8  THEN  PRINT "8 CHARACTERS MAXIMUM": GOTO 280
  21. 300 D1 =  FN D(0):D2 =  FN D(0): PRINT NA$;" ROLLED ";D1: PRINT "I ROLLED ";D2: FOR TD = 1 TO 2000: NEXT 
  22. 310  IF D1 <D2  THEN  PRINT "I GO FIRST":B4 = 1: FOR TD = 1 TO 2000: NEXT : GOTO 410
  23. 320  IF D2 <D1  THEN  PRINT "YOU GO FIRST":B4 = 0: FOR TD = 1 TO 2000: NEXT : GOTO 410
  24. 330  GOTO 300
  25. 340  PRINT "YOUR TURN ";NA$:A6 = D1:A8 = D2:B4 = 0: FOR TD = 1 TO 500: NEXT : GOTO 360
  26. 350  PRINT "MY TURN":A6 = D1:A8 = D2:B4 = 1: FOR TD = 1 TO 2000: NEXT 
  27. 360  IF B4 = 0  THEN C$ = NA$: GOTO 380
  28. 370  GOTO 400
  29. 380  PRINT "ROLL ";C$
  30. 390  IF A13  THEN  GET A$
  31. 400 D1 =  FN D(0):D2 =  FN D(0): IF D1 <D2  THEN A8 = D1:A6 = D2: GOTO 420
  32. 410 A6 = D1:A8 = D2
  33. 420  GOSUB 3270
  34. 430 D3 = 2: IF A6 = A8  THEN D3 = 4
  35. 440  ON B4 +1 GOTO 450,760
  36. 450  IF P(25) = 0  THEN 490
  37. 460  IF P(25 -A6) > -2  OR P(25 -A8) > -2  THEN 480
  38. 470  PRINT "BLOCKED":B4 = 1 -B4: GOTO 350
  39. 480  PRINT "FROM BAR";:A4 = 25: GOSUB 2320: GOTO 590
  40. 490  FOR X = 25 TO A6 +1  STEP  -1: IF P(X) > = 1  AND P(X -A6) > -2  THEN 550
  41. 500  NEXT X: FOR X = 25 TO A8 +1  STEP  -1: IF P(X) > = 1  AND P(X -A8) > -2  THEN ZZ = 25: GOTO 550
  42. 510  NEXT X: IF A5 <7  AND A5 -A6 <1  THEN 550
  43. 520  IF A5 <7  AND A5 -A8 <1  THEN 550
  44. 530  IF (A5 <7  AND P(A6) >0)  OR (A5 <7  AND P(A8) >0)  THEN 550
  45. 540  PRINT "YOU CAN'T MOVE":B4 = 1 -B4: GOTO 350
  46. 550  GOSUB 2240
  47. 560  IF P(ZZ) <1  THEN  GOSUB 2230: GOTO 450
  48. 570 A4 = ZZ
  49. 580  GOSUB 2320
  50. 590 A2 = ZZ
  51. 600  IF A2 = B5  THEN 710
  52. 610  IF P(A2) > -2  THEN 630
  53. 620  GOSUB 2230: GOTO 450
  54. 630  IF A4 -A2 = A6  THEN A6 = A8: GOTO 660
  55. 640  IF A4 -A2 = A8  THEN A8 = A6: GOTO 660
  56. 650  GOSUB 2230: GOTO 450
  57. 660 P(A4) = P(A4) -1: IF P(A2) =  -1  THEN P(0) = P(0) +1:P(A2) = 1: GOSUB 2920: GOTO 680
  58. 670 P(A2) = P(A2) +1: GOSUB 2920
  59. 680  IF B2 = 0  THEN 2150
  60. 690 D3 = D3 -1: IF D3 = 0  THEN B4 = 1: GOTO 350
  61. 700  GOTO 450
  62. 710  IF A5 >6  THEN 740
  63. 720  IF A4 = A8  OR (A4 = A5  AND A8 >A5)  THEN A8 = A6: GOTO 750
  64. 730  IF A4 = A6  OR (A4 = A5  AND A6 >A5)  THEN A6 = A8: GOTO 750
  65. 740  GOSUB 2230: GOTO 450
  66. 750 P(A4) = P(A4) -1:P2 = P2 +1: GOSUB 2920: GOTO 680
  67. 760  IF P(0) = 0  AND A9 = 0  AND A7 >18  THEN 1560
  68. 770  IF P(0) = 0  THEN 890
  69. 780  IF P(A6) >1  AND P(A8) >1  THEN B4 = 0: PRINT "I'M BLOCKED": GOTO 340
  70. 790  IF P(A6) = 1  THEN A2 = A6: GOTO 850
  71. 800  IF P(A8) = 1  THEN A2 = A8: GOTO 850
  72. 810  IF  SGN(P(A6)) =  -1  THEN A2 = A6: GOTO 850
  73. 820  IF P(A8) < =  -1  THEN A2 = A8: GOTO 850
  74. 830  IF P(A6) = 0  THEN A2 = A6: GOTO 850
  75. 840  IF P(A8) = 0  THEN A2 = A8
  76. 850 P(0) = P(0) -1: PRINT "FROM BAR TO --";A2: IF A2 = A6  THEN A6 = A8: GOTO 870
  77. 860 A8 = A6
  78. 870  IF P(A2) = 1  THEN P(25) = P(25) +1:P(A2) =  -1: GOSUB 2920: GOTO 2110
  79. 880 P(A2) = P(A2) -1: GOSUB 2920: GOTO 2110
  80. 890  IF A7 >A5  THEN 1980
  81. 900  IF D3 = 1  OR D3 = 3  THEN 1140
  82. 910  FOR X = 24 TO 18  STEP  -1: IF P(X) < >1  THEN 980
  83. 920  IF (P(X -A6) < -2  OR P(X -A6) =  -1)  AND (P(X -A8) < -2  OR P(X -A8) =  -1)  THEN 2040
  84. 930  IF X -A6 = X -A8  AND P(X -A6) < -1  THEN 2040
  85. 940  IF X +A6 +A8 >24  THEN 960
  86. 950  IF X -A6 <19  AND P(X -A6) <0  AND P(X +A6 +A8) <0  THEN 2040
  87. 960  IF X +A6 +A8 >24  THEN 980
  88. 970  IF (P(X -A6) < -2  OR P(X +A6) =  -1)  AND P(X +A6 +A8) <0  THEN 2040
  89. 980  NEXT X: FOR X = 24 TO 19  STEP  -1: IF P(X) < > -1  OR X >A5  OR  FN Z(X) >0  THEN 1070
  90. 990  IF (P(X -A6) < -2  OR P(X -A6) =  -1)  THEN 2040
  91. 1000  IF (P(X -A8) =  -1  OR P(X -A8) < -2)  THEN 2050
  92. 1010  IF (P(X -A6 -A8) =  -1  OR P(X -A6 -A8) < -2)  AND P(X -A6) = 1  THEN A4 = X -A6 -A8:A2 = X -A8: GOTO 2060
  93. 1020  IF (P(X -A6 -A8) =  -1  OR P(X -A6 -A8) < -2)  AND P(X -A8) = 1  THEN A4 = X -A6 -A8:A2 = X -A6: GOTO 2060
  94. 1030  IF (P(X -A6 -A8) =  -1  OR P(X -A6 -A8) < -2)  AND P(X -A8) <2  THEN A4 = X -A6 -A8:A2 = X -A6: GOTO 2060
  95. 1040  IF (P(X -A6 -A8) =  -1  OR P(X -A6 -A8) < -2)  AND P(X -A6) <2  THEN A4 = X -A6 -A8:A2 = X -A8: GOTO 2060
  96. 1050  IF P(X -A6 -A8) <0  AND P(X -A6) <2  AND X -A6 -A8 <19  THEN A4 = X -A6 -A8:A2 = X -A8: GOTO 2060
  97. 1060  IF P(X -A6 -A8) <0  AND P(X -A8) <2  AND X -A6 -A8 <19  THEN A4 = X -A6 -A8:A2 = X -A6: GOTO 2060
  98. 1070  NEXT X: FOR X = 24 TO 18  STEP  -1: IF A5 <18  THEN 1140
  99. 1080  IF P(X) >1  OR X >A5  THEN 1130
  100. 1090  IF (P(X -A6) =  -2  AND X -A6 <13)  OR ((P(X -A6) =  -1  OR P(X -A6) < -2)  AND (P(X -A8) =  -1  OR P(X -A8) < -2))  THEN 2040
  101. 1100  IF (P(X -A6) =  -1  OR P(X -A6) < -2  OR (X -A6 <19  AND P(X -A6) <0))  THEN 1120
  102. 1110  GOTO 1130
  103. 1120  IF (P(X -A8) =  -1  OR P(X -A8) < -2  OR (X -A8 <19  AND P(X -A8) <0))  THEN 2040
  104. 1130  NEXT X
  105. 1140  FOR X = 24 TO 7  STEP  -1: IF P(X) < > -1  OR X >A5  OR  FN Z(X) >0  THEN 1170
  106. 1150  IF (P(X -A6) =  -1  OR P(X -A6) < -2)  AND A1 >3  THEN 2040
  107. 1160  IF X <19  AND (P(X -A6) =  -1  OR P(X -A6) < -2)  THEN 2040
  108. 1170  NEXT X: FOR X = 24 TO 18  STEP  -1: IF A5 <18  THEN 1290
  109. 1180  IF P(X) < > -1  OR X >A5  OR  FN Z(X) >0  THEN 1280
  110. 1190  IF (P(X -A6) =  -1  OR P(X -A6) < -2)  OR (P(X -A6) <0  AND X -A6 <19)  THEN 2040
  111. 1200  IF X +A6 >24  THEN 1220
  112. 1210  IF P(X +A6) < =  -1  OR (X +A6 >A5  AND P(X +A6) <2)  THEN 2000
  113. 1220  IF X +A8 >24  THEN 1240
  114. 1230  IF P(X +A8) < =  -1  OR X +A8 >A5  THEN 2010
  115. 1240  IF X +A6 >24  THEN 1260
  116. 1250  IF P(X +A6) <2  AND X +A6 >A5  THEN 2000
  117. 1260  IF X +A8 >24  THEN 1280
  118. 1270  IF P(X +A8) <2  AND X +A8 >A5  THEN 2010
  119. 1280  NEXT X
  120. 1290  FOR X = 24 TO 19  STEP  -1: IF A5 <19  THEN 1360
  121. 1300  IF P(X) < > -1  OR X >A5  OR  FN Z(X) >0  THEN 1350
  122. 1310  IF X +A6 >24  THEN 1330
  123. 1320  IF (X +A6 >A5  AND P(X +A6) <2)  THEN 2000
  124. 1330  IF X +A8 >24  THEN 1350
  125. 1340  IF (X +A8 >A5  AND P(X +A8) <2)  THEN 2010
  126. 1350  NEXT X
  127. 1360  IF (A1 >2  AND P(25) >0)  OR A1 >A3  THEN 1380
  128. 1370  GOTO 1420
  129. 1380  FOR X = 24 TO 19  STEP  -1: IF P(X) < > -1  OR  FN Z(X) >0  THEN 1410
  130. 1390  IF X -A6 <19  AND P(X -A6) <0  THEN 2040
  131. 1400  IF X -A8 <19  AND P(X -A8) <0  THEN 2050
  132. 1410  NEXT X
  133. 1420  FOR X = 1 TO 12: IF P(X) > -1  THEN 1450
  134. 1430  IF P(X +A6) = 1  THEN 2000
  135. 1440  IF P(X +A8) = 1  THEN 2010
  136. 1450  NEXT X: FOR X = 18 TO 7  STEP  -1: IF P(X) < > -1  OR X >A5  OR  FN Z(X) >1  THEN 1480
  137. 1460  IF P(X -A6) < -2  OR P(X -A6) =  -1  THEN 2040
  138. 1470  IF P(X -A8) < -2  OR P(X -A8) =  -1  THEN 2050
  139. 1480  NEXT X: FOR X = 1 TO 24 -A6: IF P(X) < > -1  THEN 1500
  140. 1490  IF P(X +A6) < =  -1  OR (X +A6 >A5  AND X +A6 <25)  THEN 2000
  141. 1500  NEXT X: FOR X = 1 TO 24 -A6: IF P(X) < -2  AND (P(X +A6) < =  -1  OR (X +A6 >A5  AND X +A6 <25))  THEN 2000
  142. 1510  NEXT X: IF P(1) =  -2  AND P(1 +A6) <2  AND P(1 +A6 +A8) <0  THEN X = 1: GOTO 2000
  143. 1520  FOR X = A7 TO 18: IF (P(X) =  -1  OR P(X) < -2)  AND P(X +A6) <2  THEN 2000
  144. 1530  NEXT X: FOR X = A7 TO 24 -A6: IF  SGN(P(X)) =  -1  AND P(X +A6) <2  THEN 2000
  145. 1540  NEXT X: FOR X = A7 TO 24 -A8: IF P(X) < =  -1  AND P(X +A8) <2  THEN 2010
  146. 1550  NEXT X: GOSUB 2220: GOTO 360
  147. 1560  IF A7 >A5  THEN 1830
  148. 1570  IF P(25 -A6) < -2  OR P(25 -A6) =  -1  THEN 2020
  149. 1580  IF P(25 -A8) < -2  OR P(25 -A8) =  -1  THEN 2030
  150. 1590  FOR X = A7 TO 24: IF P(X) > -1  THEN 1800
  151. 1600  IF D3 = 1  OR D3 = 3  THEN 1780
  152. 1610 Y =  ABS(P(X)): IF Y >3  THEN Y = 4
  153. 1620  ON Y GOTO 1750,1630,1690,1750
  154. 1630  IF A7 +A6 >24  AND A7 +A8 >24  THEN 2000
  155. 1640  IF A7 +A6 >24  AND A7 +A8 >A5  THEN 2000
  156. 1650  IF X +A8 >24  THEN 1670
  157. 1660  IF X +A6 >24  AND X = A7  AND P(X +A8) <2  THEN 2000
  158. 1670  IF X +A8 >24  AND X +A6 >24  AND A8 = A7  THEN 2010
  159. 1680  IF X +A8 >24  AND (X +A6 >A5  AND X +A6 <25)  THEN  IF P(X +A6) < =  -1  THEN 2010
  160. 1690  IF 25 -A6 = X  THEN 2020
  161. 1700  IF X +A6 >A5  THEN 1720
  162. 1710  GOTO 1740
  163. 1720  IF X +A6 <25  THEN  IF P(X +A6) <1  THEN 2000
  164. 1730  GOTO 1750
  165. 1740  IF X +A6 <25  THEN  IF  SGN(P(X +A6)) =  -1  THEN 2000
  166. 1750  IF X +A8 >24  AND X = A7  THEN 2000
  167. 1760  IF X +A8 >A5  THEN  IF P(X +A8) <2  THEN 2000
  168. 1770  IF  SGN(P(X +A8)) =  -1  AND (P(X +A8) =  -1  OR P(X +A8) < -2)  THEN 2010
  169. 1780  IF P(X) =  -1  THEN  IF X +A6 <25  THEN  IF P(X +A6) <0  THEN 2000
  170. 1790  IF P(X +A8) <0  AND X +A8 <25  AND P(X) =  -1  THEN 2010
  171. 1800  NEXT X: FOR X = 24 TO A7  STEP  -1: IF X +A6 >24  OR P(X) =  >0  THEN 1820
  172. 1810  IF (P(X) =  -1  OR P(X) < -2)  AND (P(X +A6)  OR X +A6 >A5)  AND (P(X +A6) <2)  THEN 2000
  173. 1820  NEXT X
  174. 1830  IF  SGN(P(25 -A6)) =  -1  THEN 2020
  175. 1840  IF  SGN(P(25 -A8)) =  -1  THEN 2030
  176. 1850  IF A7 +A6 >24  THEN 1980
  177. 1860  IF A7 +A8 >24  THEN 1990
  178. 1870  FOR X = A7 TO 24: IF P(X) > -1  OR (X +A6 >24  AND X +A8 >24)  THEN 1900
  179. 1880  IF P(X +A6) = 0  THEN 2000
  180. 1890  IF P(X +A8) = 0  THEN 2010
  181. 1900  NEXT X: FOR X = A7 TO 24: IF P(X) > -1  THEN 1950
  182. 1910  IF X +A6 >24  THEN 1950
  183. 1920  IF P(X +A6) <2  THEN 2000
  184. 1930  IF X +A8 >24  THEN 1950
  185. 1940  IF P(X +A8) <2  THEN 2010
  186. 1950  NEXT X: IF A7 +A6 <5  THEN  IF P(A7 +A6) <2  THEN 1980
  187. 1960  IF A7 +A8 <25  THEN  IF P(A7 +A8) <2  THEN 1980
  188. 1970  GOSUB 2220: GOTO 360
  189. 1980 A4 = A7:A2 = A7 +A6: GOTO 2060
  190. 1990 A4 = A7:A2 = A7 +A8: GOTO 2060
  191. 2000 A4 = X:A2 = X +A6: GOTO 2060
  192. 2010 A4 = X:A2 = X +A8: GOTO 2060
  193. 2020 A4 = 25 -A6:A2 = 25: GOTO 2060
  194. 2030 A4 = 25 -A8:A2 = 25: GOTO 2060
  195. 2040 A4 = X -A6:A2 = X: GOTO 2060
  196. 2050 A4 = X -A8:A2 = X
  197. 2060 P(A4) = P(A4) +1: IF A2 -A4 = A6  THEN A6 = A8: GOTO 2080
  198. 2070 A8 = A6
  199. 2080  IF A2 >24  THEN P1 = P1 +1:A2 = B5: GOSUB 2140: GOSUB 2920: GOTO 2110
  200. 2090  IF P(A2) = 1  THEN P(25) = P(25) +1:P(A2) =  -1: GOSUB 2140: GOSUB 2920: GOTO 2110
  201. 2100 P(A2) = P(A2) -1: GOSUB 2140: GOSUB 2920
  202. 2110  IF B3 = 0  THEN C$ =  STR$(B5):B1 = 1: GOTO 2150
  203. 2120 D3 = D3 -1: IF D3 = 0  THEN B4 = 0: GOTO 360
  204. 2130  GOTO 760
  205. 2140  PRINT "FROM--";A4;"  TO--";A2: RETURN 
  206. 2150  IF (A7 <7  AND P1 = 0)  OR (P2 = 0  AND A5 >18)  THEN B$ = "B A C K G A M M O N"
  207. 2160  IF P1 = 0  OR P2 = 0  THEN B$ = "G A M M O N"
  208. 2170  IF B1 = 1  THEN  PRINT ""
  209. 2180  IF C$ < >NA$  THEN C$ = "ME"
  210. 2190  PRINT "  THE WINNER IS ";C$: PRINT " PRESS Q TO QUIT": GET A$: IF A$ = "Q"  THEN  END 
  211. 2200  RUN 
  212. 2210  END 
  213. 2220  PRINT " BLOCKED ":B4 = 1 -B4: RETURN 
  214. 2230  PRINT : PRINT "INVALID MOVE": RETURN 
  215. 2240  PRINT "FROM-";: GET A$: PRINT A$;
  216. 2250 A =  VAL(A$): IF A >2  THEN ZZ = A: GOTO 2290
  217. 2260  GET B$: PRINT B$;
  218. 2270 B =  VAL(B$): IF B$ = " "  OR B$ =  CHR$(13)  THEN ZZ = A: GOTO 2290
  219. 2280 ZZ = A *10 +B
  220. 2290  IF ZZ <1  OR ZZ >24  THEN 2240
  221. 2300  PRINT 
  222. 2310  RETURN 
  223. 2320  PRINT "  TO-";: GET A$: PRINT A$;
  224. 2330 A =  VAL(A$): IF A >2  OR A4 <9  THEN ZZ = A: GOTO 2370
  225. 2340  GET B$: PRINT B$;
  226. 2350 B =  VAL(B$): IF B$ = " "  OR B$ =  CHR$(13)  THEN ZZ = A: GOTO 2390
  227. 2360 ZZ = A *10 +B
  228. 2370  IF ZZ <0  OR ZZ >24  THEN 2320
  229. 2380  PRINT 
  230. 2390  RETURN 
  231. 2400  FOR I = 2048 TO 2277
  232. 2410  READ X: POKE I,X: NEXT 
  233. 2420  REM     ** TABLE HEADER **
  234. 2430  DATA   12,0,32,0,45,0,63,0,79,0,92,0,107,0,124,0,140,0,157,0,170,0, 189,0,205,0,228,0,5,0,5,0
  235. 2440  REM     ** SHAPE #1 (1)
  236. 2450  DATA   41,45,229,35,36,36,23,23,77,145,82,0
  237. 2460  REM     ** SHAPE #2 (2)
  238. 2470  DATA   0,41,45,229,27,12,5,193,5,193,60,193,63,30,149,146,73,1,0
  239. 2480  REM     ** SHAPE #3 (3)
  240. 2490  DATA   1,193,4,193,193,96,45,21,190,43,21,246,27,45,13,0
  241. 2500  REM     ** SHAPE #4 (4)
  242. 2510  DATA   73,33,44,28,36,188,23,23,46,109,145,0,0
  243. 2520  REM     ** SHAPE #5 (5)
  244. 2530  DATA   1,193,21,45,12,36,28,63,39,44,45,173,146,18,0
  245. 2540  REM     ** SHAPE #6 (6)
  246. 2550  DATA      9,45,5,193,228,63,151,36,36,5,193,45,21,149,146,0,0
  247. 2560  REM     ** SHAPE #7 (7)
  248. 2570  DATA   9,36,5,193,5,193,5,193,60,63,191,146,82,73,9,0
  249. 2580  REM     ** SHAPE #8 (8)
  250. 2590  DATA   1,193,100,45,5,193,228,63,23,118,73,50,222,43,109,0,0
  251. 2600  REM     ** SHAPE #9 (9)
  252. 2610  DATA   41,45,193,12,36,228,63,23,118,45,141,18,0
  253. 2620  REM     ** SHAPE #10 (0)
  254. 2630  DATA   1,193,36,36,5,193,45,21,54,54,7,193,193,184,23,22,45,13,0
  255. 2640  REM     ** SHAPE #11 (BLACK PIP)
  256. 2650  DATA   193,193,193,191,23,54,21,21,45,12,12,36,28,28,4,0
  257. 2660  REM     ** SHAPE #12 (WHITE PIP)
  258. 2670  DATA   36,44,46,46,54,55,55,63,60,60,36,37,37,22,62,21,53,12,44,7,1 93,5,0,5,0
  259. 2680  POKE 232,0: POKE 233,8
  260. 2690  SCALE= 1: ROT= 0: HCOLOR= 7
  261. 2700  DIM P(31),PX(25)
  262. 2710 P(1) =  -2:P(6) = 5:P(8) = 3:P(12) =  -5:P(13) = 5:P(17) =  -3:P(19) =  -5:P(24) = 2
  263. 2720  FOR I = 1 TO 24: READ PX(I): NEXT 
  264. 2730  DATA     20,40,60,80,100,120,160,180,200,220,240,260,260,240,220,200, 180,160,120,100,80,60,40,20
  265. 2740  HGR 
  266. 2750  HCOLOR= 3: FOR I = 0 TO 2: HPLOT 0 +I,0 +I TO 279 -I,0 +I TO 279 -I,159 -I TO 0 +I,159 -I TO 0 +I,0 +I: NEXT 
  267. 2760  FOR I = 130 TO 133: HPLOT I,0 TO I,159: NEXT : FOR I = 147 TO 150: HPLOT I,0 TO I,159: NEXT 
  268. 2770  FOR I = 1 TO 24
  269. 2780  GOSUB 2860
  270. 2790 Y = 10: IF I >12  THEN Y = 155
  271. 2800  IF S2  THEN  DRAW S1 AT PX(I) -6,Y: DRAW S2: GOTO 2820
  272. 2810  DRAW S1 AT PX(I) -3,Y
  273. 2820  IF Y = 10  THEN  HPLOT PX(I),12 TO PX(I),70
  274. 2830  IF Y = 155  THEN  HPLOT PX(I),146 TO PX(I),88
  275. 2840  NEXT 
  276. 2850  HPLOT 0,146 TO 279,146: HPLOT 0,12 TO 279,12
  277. 2860 S1 =  INT(I/10)
  278. 2870  IF   NOT S1  THEN 2900
  279. 2880 S2 = I -(S1 *10): IF   NOT S2  THEN S2 = 10
  280. 2890  GOTO 2910
  281. 2900 S1 = I:S2 = 0
  282. 2910  RETURN 
  283. 2920  FOR I = 1 TO 24
  284. 2930  IF I <13  THEN  HCOLOR= 0: DRAW 12 AT PX(I),12 +7 *( ABS(P(I)) +1): HCOLOR= 7: GOTO 2950
  285. 2940  HCOLOR= 0: DRAW 12 AT PX(I),146 -7 *( ABS(P(I)) +1): HCOLOR= 7
  286. 2950  IF I >12  THEN  HPLOT PX(I),146 TO PX(I),88
  287. 2960  IF I <13  THEN  HPLOT PX(I),12 TO PX(I),70
  288. 2970  IF P(I) = 0  THEN 3050
  289. 2980 SH = 12:NP = P(I): IF P(I) <0  THEN SH = 11:NP = 0 -NP
  290. 2990 Y = 19: IF I >12  THEN Y = 139
  291. 3000  FOR P = 1 TO NP
  292. 3010  HCOLOR= 0: DRAW 12 AT PX(I),Y: HCOLOR= 7
  293. 3020  DRAW SH AT PX(I),Y
  294. 3030 Y = Y +7: IF Y >70  THEN Y = Y -14
  295. 3040  NEXT 
  296. 3050  NEXT 
  297. 3060  IF P(25) = 0  THEN 3090
  298. 3070  FOR I = 1 TO P(25): DRAW 12 AT 140,12 +7 *I: NEXT 
  299. 3080  HCOLOR= 0: DRAW 12 AT 140,12 +7 *(P(25) +1): HCOLOR= 7
  300. 3090  IF P(0) = 0  THEN 3120
  301. 3100  FOR I = 1 TO P(0): DRAW 11 AT 140,146 -7 *I: NEXT 
  302. 3110  HCOLOR= 0: DRAW 12 AT 140,146 -7 *(P(0) +1)
  303. 3120 B2 = 0:B3 = 0
  304. 3130  FOR X = 1 TO 25: IF P(X) >0  THEN B2 = B2 +(P(X) *X)
  305. 3140  NEXT 
  306. 3150  FOR X = 1 TO 25
  307. 3160  IF P(X) <0  THEN B3 = B3 +( ABS(P(X)) *(25 -X))
  308. 3170  NEXT 
  309. 3180  HCOLOR= 0: DRAW 12 AT 140,12 +7 *(P(25) +1): DRAW 12 AT 140,146 -7 *(P(0) +1)
  310. 3190  FOR X = 25 TO 1  STEP  -1: IF  SGN(P(X)) = 1  THEN A5 = X: GOTO 3210
  311. 3200  NEXT 
  312. 3210  FOR X = 24 TO 19  STEP  -1: IF P(X) < -1  THEN A1 = A1 +1: GOTO 3230
  313. 3220  NEXT X
  314. 3230  FOR X = 1 TO 18: IF  SGN(P(X)) =  -1  THEN A9 = A9 +P(X): GOTO 3250
  315. 3240  NEXT X
  316. 3250  FOR X = 1 TO 24: IF  SGN(P(X)) =  -1  THEN A7 = X: GOTO 3270
  317. 3260  NEXT 
  318. 3270  POKE 33,39: HOME : VTAB 23: HTAB 26: PRINT NA$;" ";B2;" ": HTAB 26: PRINT "ME ";B3;" ": HTAB 26: PRINT "DICE ";A8;: IF A6 = A8  AND D1 < >D2  THEN  PRINT : GOTO 3290
  319. 3280  PRINT ":";A6
  320. 3290  POKE 33,25: RETURN